Showing posts with label Mysql. Show all posts
Showing posts with label Mysql. Show all posts

Saturday, October 19, 2013

Hàm xử lý date time trong Mysql

(Anhgolden's Blog)-Sưu tầm


NOW(): ngày hiện tại dạng yyyy-mm-dd h:m:s
ví dụ: SELECT NOW(); //kết quả: 2007-03-28 11:29:33

CURDATE(): ngày hiện tại dạng yyyy-mm-dd
ví dụ: SELECT CURDATE(); //kết quả: 2007-03-28

YEAR(): xác định năm từ 1 ngày cho trước
ví dụ: SELECT YEAR('2007-03-28 11:30:14');//kết quả: 2007

MONTH(): xác định tháng (1-12) từ 1 ngày cho trước
ví dụ: SELECT MONTH('2007-03-28 11:30:11') // kết quả: 3

MONTHNAME(): xác định tháng (January-December) từ 1 ngày cho trước
ví dụ: SELECT MONTH('2007-03-28 11:30:11')//kết quả: March

WEEKOFYEAR(): thứ tự của tuần trong năm
ví dụ: SELECT WEEKOFYEAR('200-03-28'); //kết quả: 13

WEEKDAY: số thứ tự của ngày trong tuần(0 = Monday, 6 = Sunday)
ví dụ: SELECT WEEKDAY('2007-03-28 12:23:50'); //kết quả: 2 (tương đương thứ 4)

DATE(): xác định chính ngày từ 1 biểu thức ngày
ví dụ: SELECT DATE('2003-12-31 01:02:03');
-> '2003-12-31'

DATEDIFF(expr1,expr2): tính số ngày giữa 2 ngày expr1 và expr2, nếu số ngày >0 nghĩa là expr1>expr2 và ngược lại
Ví dụ: SELECT DATEDIFF('1997-12-31 23:59:59','1997-12-30');
-> 1
SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');
-> -31

DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit): cộng(DATE_ADD) hoặc trừ(DATE_SUB) thêm vào ngày cho trước(date)
trong đó unit bao gồm các giá trị:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
SECOND_MICROSECOND
MINUTE_MICROSECOND
MINUTE_SECOND
HOUR_MICROSECOND
HOUR_SECOND
HOUR_MINUTE
DAY_MICROSECOND
DAY_SECOND
DAY_MINUTE
DAY_HOUR
YEAR_MONTH

ví dụ:
SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 SECOND);
-> '1998-01-01 00:00:00'
SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL 1 DAY);
-> '1998-01-01 23:59:59'
SELECT DATE_ADD('1997-12-31 23:59:59',
-> INTERVAL '1:1' MINUTE_SECOND);
-> '1998-01-01 00:01:00'
SELECT DATE_SUB('1998-01-01 00:00:00',
-> INTERVAL '1 1:1:1' DAY_SECOND);
-> '1997-12-30 22:58:59'
SELECT DATE_ADD('1998-01-01 00:00:00',
-> INTERVAL '-1 10' DAY_HOUR);
-> '1997-12-30 14:00:00'
SELECT DATE_SUB('1998-01-02', INTERVAL 31 DAY);
-> '1997-12-02'
SELECT DATE_ADD('1992-12-31 23:59:59.000002',
-> INTERVAL '1.999999' SECOND_MICROSECOND);
-> '1993-01-01 00:00:01.000001'


ngoài ra ta có thể dùng cách sau để thay cho DATE_ADD và DATE_SUB:
date + INTERVAL expr unit <-> DATE_ADD(date, INTERVAL expr unit)
date - INTERVAL expr unit <-> DATE_SUB(date, INTERVAL expr unit)

DATE_FORMAT(date,): định dạng lại ngày trong mysql theo định dạng của format
ví dụ:
SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
-> 'Saturday October 1997'
Các giá trị của format
%a : Sun,..,Sat
%b : Jan,..,Dec)
%c : Month, 0..12
%D : ngày 0th, 1st, 2nd, 3rd, …
%d : ngày 00..31
%e : ngày 0..31
%f : micro giây 000000..999999
%H : giờ (00..23)
%h : giờ (01..12)
%I : giờ (01..12)
%i : Phút (00..59)
%j : Ngày trong năm (001..366)
%k : giờ (0..23)
%l : giờ (1..12)
%M : Tháng(January..December)
%m : Tháng (00..12)
%p : AM hoặc PM
%r : Time, 12-hour (hh:mm:ss followed by AM or PM)
%S : Seconds (00..59)
%s : Seconds (00..59)
%T : Time, 24-hour (hh:mm:ss)
%U : Week (00..53), tuần bắt đầu bằng ngày Sunday
%u : Week (00..53), tuần bắt đầu bằng ngày Sunday,dùng với %X
%v : Week (01..53), tuần bắt đầu bằng ngày Monday,dùng với %x
%W : ngày trong tuần (Sunday..Saturday)
%w : ngày trong tuần (0=Sunday..6=Saturday)
%X : Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V
%x : Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v
%Y : năm (4 ký tự)
%y : năm (2 ký tự: 2 số cuối)
%% : A literal ‘%’ character
%x : x, for any ‘x’ not listed above

DAY()
ví dụ:
SELECT DAY('2007-03-28');
-> 28

DAYNAME()
Ví dụ:
SELECT DAYNAME('1998-02-05');
-> 'Thursday'

DAYOFMONTH(date) : ngày trong tháng 0-31
Ví dụ: SELECT DAYOFMONTH('1998-02-03');
-> 3

DAYOFWEEK(date): ngày trong tuần (1 = Sunday, 2 = Monday, …, 7 = Saturday)
ví dụ: SELECT DAYOFWEEK('1998-02-03');
-> 3

DAYOFYEAR(date): ngày trong năm (1-366)
Ví dụ: SELECT DAYOFYEAR('1998-02-03');
-> 34

EXTRACT(unit FROM date): lấy đơn vị thời gian unit từ ngày date, với unit có các giá trị giống như unit của DATE_ADD và DATE_SUB
Ví dụ: SELECT EXTRACT(YEAR FROM '1999-07-02');
-> 1999
SELECT EXTRACT(YEAR_MONTH FROM '1999-07-02 01:02:03');
-> 199907
SELECT EXTRACT(DAY_MINUTE FROM '1999-07-02 01:02:03');
-> 20102
SELECT EXTRACT(MICROSECOND FROM '2003-01-02 10:30:00.00123');
-> 123

FROM_DAYS(N): trả về dạng DATE từ 1 số nguyên
Ví dụ:
SELECT FROM_DAYS(729669);
-> '1997-10-07'
ADDDATE(date,INTERVAL expr unit) :giống như DATE_ADD(date,INTERVAL expr unit)

SUBDATE(date,INTERVAL expr unit) :giống như DATE_SUB(date,INTERVAL expr unit)
Read More »

Hàm xử lý chuỗi trong Mysql

(Anhgolden's Blog)-Sưu tầm

1. LENGTH (str)

- Xác định chiều dài chuỗi str
SELECT LENGTH ('MySQL is easy'); -- 13

2. CONCAT (str1, str2, …, strn)

- Nối các chuỗi str1, str2, …, strn thành một chuỗi duy nhất
SELECT CONCAT ('MySQL', ' is', ' easy'); -- MySQL is easy
SELECT CONCAT ('MySQL', ' is', NULL, ' easy'); -- NULL

CONCAT_WS(seperator,str1,str2,...,strN)
SELECT CONCAT ('', 'MySQL', ' is', NULL, ' easy'); -- MySQL is easy

3. FORMAT (str, n)

- Chuyển đổi định dạng chuỗi str theo dạng #,###,###.##, trong đó làm tròn đến n số thập phân
SELECT FORMAT (12345.678901, 4); -- 12,345.6789
SELECT FORMAT (12345.54321, 0); -- 12,346

4. INSERT (str, pos, len, newstr)

- Thay thế các ký tự trong chuỗi str từ vị trí thứ pos đến vị trí thứ pos+len-1 bởi chuỗi ký tự newstr
SELECT INSERT ('MySQL is easy', 3, 3, 'Library'); -- MyLibrary is easy
SELECT INSERT ('MySQL is easy', 3, 100, 'Library'); -- MyLibrary

5. INSTR (str, substr)

- Trả về vị trí xuất hiện đầu tiên của chuỗi substr trong chuỗi str
SELECT INSTR ('MySQL', 'SQL'); -- 3
SELECT INSTR ('MySQL', 'Server'); -- 0

6. LEFT (str, len)

- Trả về chuỗi ký tự tính từ vị trí bên trái của chuỗi str từ vị trí thứ nhất đến vị trí thứ len
SELECT LEFT ('MySQL is easy', 5); -- MySQL

7. RIGHT (str, len)

- Trả về chuỗi ký tự tính từ vị trí bên phải của chuỗi str từ vị trí thứ nhất đến vị trí thứ len.
SELECT RIGHT ('MySQL is easy', 7); -- is easy

8. LOCATE (substr, str, pos)

- Trả về vị trí xuất hiện đầu tiên của chuỗi substr trong chuỗi str tính từ vị trí thứ pos
SELECT LOCATE ('very', 'MySQL is very very easy'); -- 10
SELECT LOCATE ('very', 'MySQL is very very easy', 11); -- 15

9. LOWER (str)

- Chuyển đổi chuỗi str thành chữ thường
SELECT LOWER ('MySQL is easy'); -- mysql is easy

10. UPPER (str)

- Chuyển đổi chuỗi str thành chữ hoa
SELECT UPPER ('MySQL is easy'); -- MYSQL IS EASY

11. LTRIM (str)

- Loại bỏ tất cả khoảng trắng bên trái chuỗi str
SELECT LTRIM(' MySQL is easy'); -- MySQL is easy

12. RTRIM (str)

- Loại bỏ tất cả khoảng trắng bên phải chuỗi str
SELECT RTRIM('MySQL is easy '); -- MySQL is easy

13. REPLACE (str, from_str, to_str)

- Thay thế các ký tự from_str trong chuỗi str bởi các ký tự to_str
SELECT REPLACE ('MySQL is easy', 'MySQL', 'PHP'); -- PHP is easy

14. REVERSE (str)

- Đảo ngược chuỗi str
SELECT REVERSE ('MySQL is easy'); -- ysae si LQSyM

15. SUBSTRING (str FROM pos FOR len)

- Trích lọc từ chuỗi str một chuỗi mới, chuỗi mới này có các ký tự bắt đầu từ vị trí pos (tính từ vị trí biên trái) cho đến vị trí pos+len-1.
SELECT SUBSTRING('MySQL is easy' FROM 5 FOR 10); -- L is easy
SELECT SUBSTRING('MySQL is easy' FROM -4 FOR 2); -- ea

16. TRIM ([{BOTH | LEADING | TRAILING} [remstr] FROM] str), TRIM([remstr FROM] str)

- Trả về chuỗi str với các ký tự remstr đã bị loại bỏ, theo các tiêu chí LEADING (bên trái), TRAILING (bên phải) và BOTH (cả hai vị trí bên trái và bên phải).
SELECT TRIM (' MySQL is easy '); -- MySQL is easy
SELECT TRIM (LEADING '-' FROM '---MySQL is easy-----'); -- Output: MySQL is easy-----
SELECT TRIM (TRAILING '-' FROM '---MySQL is easy-----'); -- Output: ---MySQL is easy
SELECT TRIM (BOTH '-' FROM '---MySQL is easy-----'); -- Output: MySQL is easy
Read More »

Wednesday, October 16, 2013

Linux mysql syntax

(Anhgolden's Blog)-Sưu tầm

Export mysql db:
#mysqldump -u [USERNAME] -p [DBNAME] | gzip > [/path_to_file/DBNAME].sql.gz
or
#mysqldump -u [USERNAME] -p [DBNAME] > [/path_to_file/DBNAME].sql
#gzip -d [/path_to_file/DBNAME].sql.gz

Import mysql db:
# gunzip mysqldump.sql.gz
# mysql -u username -p -h localhost test-database < mysqldump.sql
password: _

Use mysql:
#mysql -u [USERNAME] -p
SHOW DATABASES;
DROP DATABASE [DBNAME];
CREATE DATABASE [DBNAME];
USE [DBNAME];
SOURCE [/path_to_file/DBNAME].sql;

Read More »

Thursday, May 10, 2012

Grant quyền cho user trong MySql cho phép truy cập qua network

(Anhgolden's Blog)-Sưu tầm

Hôm nay, tôi gặp trường hợp sử dụng SQLYog để truy cập MySQL qua Network thì báo lỗi: Không cho phép truy cập.
Sau đây là hướng xử lý:

Grant quyền cho user trong MySQL cho phép truy cập qua network

# mysql -u root -p
Enter password:

mysql>grant all privileges on *.* to root@'%' identified by 'passw0rd';
flush privileges;

Câu lệnh trên sẽ cho phép user root kết nối vào MySQL từ bất kỳ IP nào với password là passw0rd. Ký tự "%" đại diện cho bất kỳ IP nào.
Nếu muốn cho phép chỉ cho phép IP 192.168.159.128 connect MySQL thì thay % bằng  192.168.159.128

Ví dụ:
mysql>grant all privileges on *.* to root@'192.168.159.128' identified by 'passw0rd';
flush privileges;
Read More »