SQL Dates – SQL Огноо #
The most difficult part when working with dates is to be sure that the format of the date you are trying to insert, matches the format of the date column in the database.
Огноотой ажиллахад хамгийн хэцүү хэсэг нь оруулах гэж буй огнооны формат өгөгдлийн сангийн огнооны баганын форматтай таарч буй эсэхийг шалгах явдал юм.
As long as your data contains only the date portion, your queries will work as expected. However, if a time portion is involved, it gets more complicated.
Хэрэв өгөгдөл зөвхөн огнооны хэсгийг агуулж байгаа бол таны хүсэлтүүд хүлээгдэж буй үр дүнг өгөх болно. Гэхдээ, цагийн хэсэг оролцвол, энэ нь илүү төвөгтэй болно.
SQL Date Data Types – SQL Огнооны Өгөгдлийн төрлүүд #
Үсгийн товчлол тайлбар:
YYYY
болонYY
– ЖилMM
– СарDD
– ӨдөрHH
– ЦагMI
– МинутCC
– Секунд
MySQL comes with the following data types for storing a date or a date/time value in the database:
MySQL өгөгдлийн санд огноо эсвэл огноо/цагийн утга хадгалахад дараах өгөгдлийн төрлүүдийг агуулдаг:
DATE
– format YYYY-MM-DD
DATE
– формат ЖЖЖЖ-СС-ӨӨ
DATETIME
– format: YYYY-MM-DD HH:MI:SS
DATETIME
– формат: ЖЖЖЖ-СС-ӨӨ ЦЦ:MI:CC
TIMESTAMP
– format: YYYY-MM-DD HH:MI:SS
TIMESTAMP
– формат: ЖЖЖЖ-СС-ӨӨ ЦЦ:MI:CC
YEAR
– format YYYY or YY
YEAR
– формат ЖЖЖЖ эсвэл ЖЖ
SQL Server comes with the following data types for storing a date or a date/time value in the database:
SQL Server өгөгдлийн санд огноо эсвэл огноо/цагийн утга хадгалахад дараах өгөгдлийн төрлүүдийг агуулдаг:
DATE
– format YYYY-MM-DD
DATE
– формат ЖЖЖЖ-СС-ӨӨ
DATETIME
– format: YYYY-MM-DD HH:MI:SS
DATETIME
– формат: ЖЖЖЖ-СС-ӨӨ ЦЦ:MI:CC
SMALLDATETIME
– format: YYYY-MM-DD HH:MI:SS
SMALLDATETIME
– формат: ЖЖЖЖ-СС-ӨӨ ЦЦ:MI:CC
TIMESTAMP
– format: a unique number
TIMESTAMP
– формат: дахин давтагдашгүй тоо
Note: The date types are chosen for a column when you create a new table in your database!
Тайлбар: Огнооны төрлийг шинэ хүснэгт үүсгэх үедээ сонгоно!
SQL Working with Dates – SQL Огноотой Ажиллах #
Look at the following table:
Доорх хүснэгтийг хараарай:
Orders Table – Захиалгууд Хүснэгт #
OrderId ЗахиалгаID |
ProductName БүтээгдэхүүнНэр |
OrderDate ЗахиалгаОгноо |
---|---|---|
1 | Geitost | 2008-11-11 |
2 | Camembert Pierrot | 2008-11-09 |
3 | Mozzarella di Giovanni | 2008-11-11 |
4 | Mascarpone Fabioli | 2008-10-29 |
Now we want to select the records with an OrderDate of “2008-11-11” from the table above.
Одоо бид дээрх хүснэгтээс “2008-11-11” огноотой мэдээллийг сонгохыг хүсэж байна.
We use the following SELECT
statement:
Бид дараах SELECT
өгүүлбэрийг ашиглана:
SELECT * FROM Orders WHERE OrderDate=‘2008-11-11’
The result-set will look like this:
Үр дүн нь дараах байдалтай харагдана:
OrderId ЗахиалгаId |
ProductName БүтээгдэхүүнНэр |
OrderDate ЗахиалгаОгноо |
---|---|---|
1 | Geitost | 2008-11-11 |
3 | Mozzarella di Giovanni | 2008-11-11 |
Note: Two dates can easily be compared if there is no time component involved!
Тайлбар: Хоёр огноог цагийн хэсэг ороогүй бол амархан харьцуулж болно!
Now, assume that the “Orders” table looks like this (notice the added time-component in the “OrderDate” column):
Одоо “Захиалгууд” хүснэгт ингэж харагдаж байна гэж үзье (хүснэгтийн “ЗахиалгаОгноо” баганад цагийн хэсгийг нэмсэнд анхаарна уу):
OrderId ЗахиалгаId |
ProductName БүтээгдэхүүнНэр |
OrderDate БүтээгдэхүүнОгноо |
---|---|---|
1 | Geitost | 2008-11-11 13:23:44 |
2 | Camembert Pierrot | 2008-11-09 15:45:21 |
3 | Mozzarella di Giovanni | 2008-11-11 11:12:01 |
4 | Mascarpone Fabioli | 2008-10-29 14:56:59 |
If we use the same SELECT
statement as above:
Хэрэв бид дээрхтэй адил SELECT
өгүүлбэр ашиглавал:
SELECT * FROM Orders WHERE OrderDate=‘2008-11-11’
We will get no result! This is because the query is looking only for dates with no time portion.
Бидэнд ямар ч үр дүн гарахгүй! Учир нь энэ лавлагаа зөвхөн огнооны хэсгийг хайж байгаа юм.
Tip: To keep your queries simple and easy to maintain, do not use time-components in your dates, unless you have to!
Зөвлөмж: Таны асуулгуудыг энгийн, засварлахад хялбар байлгахын тулд, шаардлагатай биш л бол огнооны хэсэгт цагийн хэсгийг бүү ашигла!